/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package barbershop;

import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.Semaphore;

/**
 *
 * @author Гамзатов
 */
public class variables {
    public static int count;
    
    //Клиент ожидает возможности войти в парикмахерскую
    //Клиент, покидающий парикмахерскую, сигнализирует об этом ожидающему входа
    public static Semaphore maxCapacity = new Semaphore(20, true);
    
    //Клиент ожидает возможности сесть на диван
    //Клиент, встающий с дивана, сигнализирует об этом ожидающему возможность сесть на диван
    public static Semaphore sofa = new Semaphore(4, true);
    
    //Клиент ожидает пустое кресло
    //Парикмахер сигнализирует, что кресло свободно
    public static Semaphore barberChair = new Semaphore(3, true);
    
    //Ожидание освобождения парикмахера для стрижки или для выполнения обязанностей кассира
    //Сигнал об освобождении парикмахера
    public static Semaphore coord = new Semaphore(3, true);
    

    //Обеспечивает защиту доступа к глобальной переменной count, гарантируя уникальность номера каждого клиента
    public static Semaphore mutexl = new Semaphore(1, true);
    public static Semaphore mutex2 = new Semaphore(1, true);
    
    //Парикмахер ожидает, пока клиент сядет в кресло
    //Клиент сигнализирует парикмахеру, что он уже сел в кресло
    public static Semaphore cutReady = new Semaphore(0, true);
    
    //Парикмахер ожидает, пока клиент покинет кресло
    //Клиент сигнализирует парикмахеру о том, что он встал с кресла
    public static Semaphore leaveBChair = new Semaphore(0, true);
    
    //Клиент ожидает кассовый чек
    //Кассир сигнализирует о том, что оплата принята
    public static Semaphore receipt = new Semaphore(0, true);
    
    //Кассир ожидает оплаты услуг клиентом
    //Клиент сигнализирует парикмахеру о том, что он оплатил стрижку
    public static Semaphore payment = new Semaphore(0, true);

    //Клиент ожидает окончания стрижки
    //Парикмахер сигнализирует клиенту, что стрижка окончена
    public static Semaphore[] finished;
    
    public static Queue<Integer> enqueue = new ConcurrentLinkedQueue<Integer>();
    
    public static int alldone;
    public static int customerall;
}
